using System;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("TimeScaleMgr")]
	public class TimeScaleMgr : MonoClass
	{
		public static float MinTimeScale => MonoClass.smethod_6<float>(TritonHs.BlizzardT5CoreAssemblyPath, "", "TimeScaleMgr", "MinTimeScale");

		public static float MaxTimeScale => MonoClass.smethod_6<float>(TritonHs.BlizzardT5CoreAssemblyPath, "", "TimeScaleMgr", "MaxTimeScale");

		public float m_gameTimeScale => method_2<float>("m_gameTimeScale");

		public float m_timeScaleMultiplier => method_2<float>("m_timeScaleMultiplier");

		public TimeScaleMgr(IntPtr address, string className)
			: base(address, className)
		{
		}

		public TimeScaleMgr(IntPtr address)
			: this(address, "TimeScaleMgr")
		{
		}

		public static TimeScaleMgr Get()
		{
			return MonoClass.smethod_15<TimeScaleMgr>(TritonHs.BlizzardT5CoreAssemblyPath, "Blizzard.T5.Core.Time", "TimeScaleMgr", "Get", Array.Empty<object>());
		}

		public void PushTemporarySpeedIncrease(float t)
		{
			method_8("PushTemporarySpeedIncrease", t);
		}

		public float PopTemporarySpeedIncrease()
		{
			return method_11<float>("PopTemporarySpeedIncrease", Array.Empty<object>());
		}

		public float GetGameTimeScale()
		{
			return method_11<float>("GetGameTimeScale", Array.Empty<object>());
		}

		public void SetGameTimeScale(float t)
		{
			method_8("SetGameTimeScale", t);
		}

		public float GetTimeScaleMultiplier()
		{
			return method_11<float>("GetTimeScaleMultiplier", Array.Empty<object>());
		}

		public void SetTimeScaleMultiplier(float x)
		{
			method_8("SetTimeScaleMultiplier", x);
		}

		public void Update()
		{
			method_8("Update");
		}
	}
}
